package com.heima.topic;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.junit.Test;

import javax.jms.*;
import java.io.IOException;

public class TopicConsumer {

    @Test
    public void testTopicConsumer(){

        try {
            //1.创建连接工厂
            ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.128:61616");
            //2.获取连接
            Connection connection = connectionFactory.createConnection();

            //3.启动连接
            connection.start();
            //4.获取session(参数1：是否启动事务,参数2：消息确认模式)
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            //5.创建主题对象
            Topic topic = session.createTopic("test-topic");
            //6.创建消息消费者
            MessageConsumer consumer = session.createConsumer(topic);

            //7.监听消息
            consumer.setMessageListener(new MessageListener() {
                public void onMessage(Message message) {

                    TextMessage textMessage = (TextMessage)message;

                    try {
                        System.out.println("接收到的消息是:"+textMessage.getText());
                    } catch (JMSException e) {
                        e.printStackTrace();
                    }
                }
            });

            try {
                //8.等待键盘输入
                System.in.read();
                //9.关闭资源
                consumer.close();
                session.close();
                connection.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}
